1. Field of the Invention
The present invention relates to wireless communication. In particular, the present invention relates to wireless communication used in data network and remote control applications.
2. Discussion of the Related Art
Infrared radiation is widely used in data communication and remote control applications. In the prior art, data in infrared communication have been encoded, in sophisticated applications, by modulating amplitude, frequency or both. In simpler applications, data can be encoded simply by the presence or absence of infrared radiation at expected times.
One class of encoding methods is characterized by encoding every N bits of data into a symbol consisting of M binary bits of code (i.e., each bit is represented by the logic value xe2x80x981xe2x80x99 or xe2x80x980xe2x80x99), and transmitting these M bits in M time slots sequentially. In some implementations, each bit of code can be represented within a time slot by the presence or absence of a single pulse of infrared radiation (the xe2x80x9csingle pulsexe2x80x9d approach), or the presence or absence of a sequence of equally spaced pulses of infrared radiation (the xe2x80x9cmultiple pulsesxe2x80x9d approach). (Under the multiple pulses approach, the frequency of pulse repetition is known as the sub-carrier frequency.) In either approach, whether the presence or absence of radiation represents logic xe2x80x981xe2x80x99 value or logic xe2x80x980xe2x80x99 value is a matter of convention. For convenience, in the remainder of the present discussion, logic xe2x80x980xe2x80x99 and xe2x80x981xe2x80x99 values are represented, respectively, by the absence and presence of radiation in the designated time slot. The present invention is, however, not limited to either approaches. The single pulse approach is naturally simpler and faster. However, the multiple pulses approach provides a greater range due to a higher signal-to-noise ratio achievable under that approach.
Typically, the number M of bits in each symbol is usually greater than the number N of data bits. This arrangement provides a number of benefits, including (a) allowing better synchronization of clocks on the transmitting and receiving sides, (b) simplifying the design of the transmitter and the receiver, and (c) providing error detection or error correction capabilities.
Several figures of merit have been used to compare encoding schemes. For example, xe2x80x9cCode ratexe2x80x9d is the ratio N/M. Another example is xe2x80x9crun length limitsxe2x80x9d, which is typically expressed as (d,k), where d and k are, respectively, the minimum and maximum lengths allowed for a run of logic xe2x80x980xe2x80x99 value between two logic xe2x80x981xe2x80x99 values in each symbol of the encoding scheme, or between successively transmitted symbols. Yet another example is xe2x80x9cDuty cyclexe2x80x9d, which is typically expressed as a product of two factors a and b, where a is the percentage of logic 1 bits out of the total number of bits used in the symbols of the encoding scheme, and b is the percentage of time in a time slot during which radiation representing the data is present.
One encoding scheme in the prior art is the xe2x80x9cFIRxe2x80x9d or xe2x80x9c4PPMxe2x80x9d scheme. FIR has a code rate of 2/4 and a run length limit of (0,6). FIR uses the single pulse approach, with the single pulse or logic xe2x80x981xe2x80x99 value using the entire time slot, thus providing a 25%xc3x97100% duty cycle. The following is the code dictionary under FIR:
Under FIR, the minimum separation between logic xe2x80x981xe2x80x99 values is zero, which occurs whenever the symbol {0001} is followed by the symbol {1000}. In that instance, the two adjacent logic xe2x80x981xe2x80x99 values form a single pulse of double width. However, such a pulse can be erroneously processed at the receiver and the decoder circuit, as it is often difficult to differentiate a single-width pulse from the occasional double-width pulse due to distortion in the communication channel.
Another encoding scheme is the xe2x80x9cMIRxe2x80x9d scheme. MIR, which also takes the single pulse approach (with the single pulse occupying one quarter of the time slot), has a code rate of 1/1+ (explained below), a run length limit of (0,5), and a high variable duty cycle of 50%xc3x9725% maximum. The code dictionary for MIR is as follows:
MIR requires that a logic xe2x80x981xe2x80x99 value be inserted after a run of five consecutive logic xe2x80x980xe2x80x99 values. This additional rule provides the variability in the code rate and the duty cycle. The extra logic xe2x80x981xe2x80x99 values are removed by the receiver prior to decoding. As in FIR, the zero value in the run length limit can create error in the receiver. Such errors are reduced by using a single pulse which occupies only one quarter of the time slot, at the expense of bandwidth.
Yet another example is the xe2x80x9cSIRxe2x80x9d or xe2x80x9cHP SIRxe2x80x9d coding scheme, which has a code rate of {fraction (8/10)}, a run length limit of (0,9). SIR also uses a single pulse approach, with a pulse width up to {fraction (3/16)} of a time slot, to provide a maximum variable duty cycle of 90%xc3x9719%. The code dictionary for SIR is as follows:
where y is the logic value complement of x (i.e., if x has logic xe2x80x980xe2x80x99 value, then y is logic xe2x80x981xe2x80x99 value). In SIR, a logic xe2x80x981xe2x80x99 value is inserted before each 8 bits, and a logic xe2x80x980xe2x80x99 value is always inserted after the 8 bits. SIR also suffers from zero minimum run length limit and a high variable duty cycle, as in MIR and FIR discussed above.
A fourth exemplary encoding scheme is the xe2x80x9cDASKxe2x80x9d scheme in certain implementations by Sharp Corporation. DASK provides a code rate of {fraction (8/10)}, a run length limit of (0,9). DASK uses a sub-carrier frequency of 500 KHz and a high variable maximum duty cycle of 90%xc3x9750%. The code dictionary for DASK is as follows:
where y is the logic complement of x. DASK suffers the same disadvantage as SIR discussed above.
A fifth exemplary encoding scheme is the xe2x80x9cIrBUSxe2x80x9d or xe2x80x9c16PSMxe2x80x9d encoding scheme, which provides a code rate of 4/8, a run length limit of (0,10) and a subcarrrier of 1.5 MHz, and providing a high variable maximum duty cycle of 50%xc3x9750%. The code dictionary for IrBus is as follows:
IrBus is designed to avoid interference with the 38 KHz sub-carrier used by other equipment. However, IrBus also suffers from the zero minimum run length limit, and the variable duty cycle with a 50% maximum in the first factor.
A sixth exemplary encoding method is xe2x80x9cRC-5xe2x80x9d or xe2x80x9cBi-phasexe2x80x9d, which has a code rate of xc2xd, a run length limit of (0,2), a sub-carrier of 36 KHz, and a fixed duty cycle of 50%xc3x9750%. The code dictionary for RC-5 is as follows:
RC-5 also suffers from the zero minimum run length limit and a high duty cycle.
Other encoding methods have data-dependent transmission time, or use complex algorithms, such that they are either unsuitable or uneconomical for many applications. For example, a proposed xe2x80x9cIrDA VFIRxe2x80x9d or xe2x80x9cHHH(1,13)xe2x80x9d method has a high code rate of ⅔, a run length limit of (1,13). IrDA VFIR uses a single pulse approach with a pulse width occupying the full time slot, to provide a variable maximum duty cycle of 33%xc3x97100%. Under IrDA VFIR, a linear feedback shift register first scrambles the data bits, and then encodes every 2 bits of the scrambled data into three consecutive time slots. The IrDA VFIR uses a symbol dictionary which includes the symbols: {000}, {001}, {010}, {100}, and {101}. A state machine which next state is based on the current two bits of scrambled data controls the next symbol assignment for the next two bits to be transmitted, so that the resulting code has a run length limit of (1,13). As a result, the first factor in the duty cycle is variable with a maximum of 33%. As IrDA takes a single pulse approach, with the single pulse occupying the entire time slot, the second factor in the duty cycle is 100%.
The present invention provides a method for encoding a bit stream into symbols for transmitting over a wireless communciation link that has a fixed duty cycle and a run length limit (d, k), in which d is greater than 0. With error correction capability included in the decoding process, the resulting effective run length limit can be further increased. The present invention is suitable for use in infrared application and RF application, even at low bit rates.
In one embodiment of the present invention, an encoding schme is provided which includes a state machine having a first state, a second state and a third state, each state being associated with a different group of symbols. In each group of symbols are state transition symbols. The encoding scheme uses this state machine to guide encoding data bits. When a state transition symbol is generated, the state machine also changes state. In one implementation, 4-bit symbols are used, with each symbol in the first group of symbols provided a ratio of logic xe2x80x981xe2x80x99 bits to logic xe2x80x980xe2x80x99 value bits equaling 3 to 1, and each symbol in the third group of symbols having a ratio of 2:2 and one symbol in the second group being {0000}. In that implementation, the state machine goes into the second state to avoid the current symbol from being followed by another symbol in the first group to create consecutive logic xe2x80x981xe2x80x99 value bits. Also, in that implementation, the state machine, after issuing the {0000} symbol, enters the third state, so as to allow the higher duty cycle symbols in the third group to maintain an overall average duty cycle of 25%.
In that implementation, the code dictionary includes error correction capability to extend said run length limit to an effective run length limit of (2,9).
The encoding scheme of the present invention can be used in a wireless communication system. In one such system, a controller capable of sending a polling packet having an identification field is provided, so that multiple devices, each identified by a unique identification specified in the polling packet can respond by sending a response packet returning device-specific information (e.g., position of a pointing device, key depressed on a key board, etc.)
The present invention is better understood upon consideration of the detailed description below and the accompanying drawings.